/**
 * @file demo136.c
 * @author WRS (1352509846@qq.com)
 * @brief 只出现一次的数字
 * 给定一个非空整数数组，除了某个元素只出现一次之外，
 * 其余每个元素均出现两次，找出那个只出现一次的元素
 * @version 0.1
 * @date 2021-09-01
 * 
 * @copyright Copyright (c) 2021
 * 
 */

#include <stdio.h>

/**
 * @brief 找出数组中只出现一次的数
 * 思路：由于题目已告知数组时整数数组且是非空的，只有某个元素只出现一次，其他元素都出现两次，
 * 可以使用位运算中的“异或”，两个相同数字异或的结果为0，由于数组中其他元素均出现两次，只有一个元素出现一次，
 * 所以可以遍历整个数组，让所有数组元素异或，得到的结构就是只出现一次的那个元素
 * a^a = 0
 * 0^a = a
 */
int singleNumber(int* nums, int numsSize)
{
    int ans = nums[0];
     for(int i=0;i<numsSize;i++)
     {
         ans ^= nums[i];
     }
     return ans;
}

int main(int argc, char const *argv[])
{
    printf("请输入一个数组：");

    return 0;
}
